import random

import requests

user_agents = [
    # Apple iPhone
    "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15A372 Safari/604.1",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1",

    # Samsung Galaxy
    "Mozilla/5.0 (Linux; Android 11; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",

    # Huawei
    "Mozilla/5.0 (Linux; Android 10; HUAWEI ELS-NX9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 10; LIO-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
    # 荣耀Play4T手机
    "Mozilla/5.0 (Linux; Android 10; AKA-AL10 Build/HONORAKA-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.93 Mobile Safari/537.36",

    # Xiaomi
    "Mozilla/5.0 (Linux; Android 11; Mi 11) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 11; Redmi Note 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",

    # OnePlus
    "Mozilla/5.0 (Linux; Android 11; OnePlus 9 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 10; HD1901) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",

    # Google Pixel
    "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 11; Pixel 4a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",

    # Oppo
    "Mozilla/5.0 (Linux; Android 11; OPPO Find X3 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 10; CPH2109) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",

    # Vivo
    "Mozilla/5.0 (Linux; Android 11; vivo X60 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.120 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 10; vivo 1915) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",

    # Sony
    "Mozilla/5.0 (Linux; Android 10; XQ-AT51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",

    # Motorola
    "Mozilla/5.0 (Linux; Android 10; motorola edge+) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",

    # LG
    "Mozilla/5.0 (Linux; Android 10; LM-V600) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36"
]


def get_res(url, referer='', timeout=15):
    # 有些网站会检查 Referer 头部。将其设置为合适的值有时可以帮助绕过检查。
    # 随机选择一个User-Agent
    random_user_agent = random.choice(user_agents)
    if referer:
        headers = {
            'User-Agent': random_user_agent,
            'Referer': referer
        }
    else:
        headers = {
            'User-Agent': random_user_agent,
        }
    return requests.get(url, headers=headers, timeout=timeout) # 设置超时时间为 15 秒 默认是 没有超时时间，避免无限等待情况出现


def send_sse_stream(uri, headers):
    """
    发送一个eventStream请求
    :param uri:
    :param headers:
    :return:
    """

    # 发送请求并获取响应对象
    # 注意：这里需要替换成实际的URL

    data = {
        "model": "",
        "action": "next",
        "mode": "chat",
        "userAction": "chat",
        "requestId": "48fdc782e0324cdb978be661eb6937a9",  # uuid 替换掉-
        "sessionId": "4d51cc4b992e408e8ccf9f215bcfad55",
        "sessionType": "text_chat",
        "parentMsgId": "1692f862e6d6408f84a5032021a38ac0",
        "contents": [
            {
                "role": "user",
                "contentType": "text",
                "content": "作为一位专业的自然语言处理机器人和自媒体写手，你的任务是从以下软件内容中提取关键信息，无需添加任何引导性或解释性的语句，请注意以下几点：\n\n1.提取正文的信息\n2.标题信息：提取正文软件的标题。\n3.超链接：如果内容中包含一个或多个超链接，请逐一列出，并在不同链接间换行处理。\n4.简要介绍：提供关于软件的简洁介绍，长度约为80字, 需要做简要的优化避免语句不通顺。\n5.中文回复\n6.输出格式：请使用JSON结构来展示提取的信息，如下所示：\n\n[\n  {\n    \"title\": \"软件\",        // 标题信息\n    \"url\": [\"http://xxx\"],   // 超链接\n    \"desc\": \"xxx\"            // 简单介绍\n  }\n]\n\n7.json 结构要严谨绝对正确\n\n\n现在，请处理以下软件内容：#  一波福利网站，看着都流口水，建议收藏\\n\\n\\n\\n# 一波福利网站，看着都流口水，建议收藏\\n\\n\\n\\n  \\n\\n今天分享几个干货网站，换换心情，  您的  在看、转发、点赞\\n\\n就是对tuonioooo最大的支持！\\n\\n  \\n\\nEffidit\\n\\n  \\n\\n网址  ：  https://effidit.qq.com/\\n\\n  \\n\\n\\\"Effidit\\\" 是由腾讯 AI 实验室开发的一款数字写作助手，全称为“高效智能编辑”。\\n这款工具旨在通过利用人工智能（AI）技术帮助用户更高效地写出更高质量的文本。\\n\\n  \\n\\n** 主要特性：  **\\n\\n  * 只能纠错 \\n\\n  * 文本补全 \\n\\n  * 文本润色 \\n\\n  * 超级网电 \\n\\n帮小忙\\n\\n  \\n\\n网址  ：  https://tool.browser.qq.com/\\n\\n  \\n\\n\\\"帮小忙\\\" 是腾讯 QQ\\n浏览器推出的一个在线工具平台。这个平台提供了100多种便利的小工具，覆盖了图片处理、数据换算、生活娱乐、教育、文本处理、文档转换、开发工具、视频处理和PDF转换等九大类实用功能。\\n\\n**特点：**\\n\\n  * 用户群体：这个平台适用于需要在生活、工作、学习中快速处理各种问题的用户。 \\n\\n  * 功能丰富：提供的小工具涵盖范围广泛，能帮助解决日常生活和工作中的多种需求和问题。 \\n\\n  * 易于使用：这些工具设计简单直观，不需要登录账号，用户可以免费使用。 \\n\\n  * 实用性：平台上的工具既包括实用的日常工具，如证件照生成、文本处理工具，也包括开发者可能需要的工具，如数据转换和加密工具。 \\n\\n  * 不断更新：腾讯会不断更新和添加新的工具，以适应用户的不断变化的需求。 \\n\\n  * 方便快捷：该平台以其方便快捷的特点，能在关键时刻为用户提供帮助，如PDF转换和图片处理等功能。 \\n\\n  \\n\\n在线录屏  \\n\\n  \\n\\n证件照生成器  \\n\\n更多的，请自行查看\\n\\n映技派\\n\\n  \\n\\n网址：  https://www.yjpoo.com/\\n\\n  \\n\\n映技派是一个专注于人工智能和数字创作的中文网站，提供各种与人工智能相关的工具和资源。\\n\\n  \\n\\n  \\n\\n  \\n\\n微信搜索，关注公众号“ **程序猿的游戏开源工具密圈** ”(ID:  gh_cc865e4c536b  )\\n\\n  \\n\\n  \\n\\n  \\n\\n。\n\n你的回答应该清晰、准确，并提供足够的细节来支持你的观点。同时，考虑到这些软件的用途和特点，以便更好地理解它们并为读者提供更好的解释。"
            }
        ]
    }

    response = requests.post(uri, data=data, headers=headers, stream=True)

    # 检查响应状态码
    if response.status_code != 200:
        print(f'Error: {response.status_code}')
        return

    # 迭代响应的行
    for line in response.iter_lines(decode_unicode=True):
        if line:
            # 处理接收到的SSE事件
            print(line)


# if __name__ == '__main__':
#     headers = {
#         'Accept': 'text/event-stream',
#         'Referer': 'https://tongyi.aliyun.com/',
#         'Content-Type': 'application/json',
#         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
#         'Cookie': 'l=fBErw2K4PoJbbFv1BOfaFurza77OSIRYSuPzaNbMi9fP_3fB5npFW1Bo8TT6C3GVFsMpR3S3hc2kBeYBq3K-nxvtGwBLE8DmndLHR35..; t=65baadfb0f3cc0e11f34d6bfceddc7ec; login_tongyi_ticket=jvSbs_thZJ_44Yz53t4vBMjVaHrrXUaIrWMUmL5WA5QsO5DVA7k9AnYkTo9u8avB0; cnaui=1408700103039796; cna=FccaHrS8H38CAT2Ves4sVz/Y; atpsida=4f327cc7855d3947a1ea9c4d_1711246209_1; aui=1408700103039796; sca=a20a854b; isg=BMzMn6KdxeCv-dFyzNPnL9rsnSr-BXCvoFeMNyaIOXfqsWW7XxHoPylHUbmJ_6gH; tfstk=cmwGBPMuB5l1bOtdxGM1KyKawhyca-OE57VLLgZSt6h4ZePrbsbvTQJQ4NuhPNRf.',
#         'X-Platform': 'pc_tongyi',
#         'X-Xsrf-Token': '738def07-bd7a-4712-bddf-83367b792840'
#     }
#
#     send_sse_stream('https://qianwen.biz.aliyun.com/dialog/conversation', headers)
